<!DOCTYPE html>
<html lang="zh-cn" itemscope itemtype="http://schema.org/WebPage">
  <head>
    

  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

  <title>Nginx Conf - panda power!</title>
  <meta name="description" content="nginx.conf详解 [TOC]
1、user 示例:user nginx;
nginx worker进程运行的用户及用户组
语法：user username[groupname] 默认：user nobody nobody
user用于设置master进程启动后，fork出的worker进程运行在那个用户和用户组下。当按照&rdquo;user username;&ldquo;设置时，用户组名与用户名相同。 2、worker_processes 示例: worker_processes 4;
nginx worker进程个数：其数量直接影响性能。每个worker进程都是单线程的进程，他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用，那么，有多少CPU内核就应该配置多少个进程，反之，有可能出现阻塞式调用，那么，需要配置稍多一些的worker进程。
3、events{} 3.1、worker_connections 示例：worker_connetcions 1024;
定义每个work_process同时开启的最大连接数，即允许最多只能有这么多连接
3.2、accept_mutex 示例：accept_mutex on；
当某一个时刻只有一个网络连接请求服务器时，服务器上有多个睡眠的进程会被同时叫醒，这样会损耗一定的服务器性能。
Nginx中的accept_mutex设置为on，将会对多个Nginx进程（worker processer）接收连接时进行序列化，防止多个进程争抢资源。
默认就是on。
3.3multi_accept 示例：multi_accept on;
nginx worker processer可以做到同时接收多个新到达的网络连接，前提是把该参数设置为on。
默认为off，即每个worker process一次只能接收一个新到达的网络连接。
4、http{} 4.1、include 示例：include /etc/nginx/mime.types;
对配置文件所包含文件的设定，减少主配置文件的复杂度，相当于把部分设置放在别的地方，然后在包含进来，保持主配置文件的简洁
4.2、default_type 示例：default_type application/octet-stream;
默认文件类型，当文件类型未定义时候就使用这类设置的
4.3、log_format 示例：log_format main &lsquo;$remote_addr - $remote_user [$time_local] &ldquo;$request&rdquo; &lsquo;
​ &lsquo;$status $body_bytes_sent &ldquo;$http_referer&rdquo; &lsquo;
​ &lsquo;&ldquo;$http_user_agent&rdquo; &ldquo;$http_x_forwarded_for&rdquo;&lsquo;;
定义nginx日志内容格式，其中main为日志格式的名字，后面的为nginx的内部变量组成的一串字符串
4.4、access_log 示例：access_log /var/log/nginx/access.">
  <meta name="author" content="casper chen"/><script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "WebSite",
    "name": "panda power!",
    
    "url": "https:\/\/cyboca.ga"
}
</script><script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Organization",
  "name": "",
  "url": "https:\/\/cyboca.ga"
  
  
  
  
}
</script>
<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [{
        "@type": "ListItem",
        "position": 1,
        "item": {
          "@id": "https:\/\/cyboca.ga",
          "name": "home"
        }
    },{
        "@type": "ListItem",
        "position": 3,
        "item": {
          "@id": "https:\/\/cyboca.ga\/post\/emiya\/nginx-conf\/",
          "name": "Nginx conf"
        }
    }]
}
</script><script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Article",
  "author": {
    "name" : "emiya"
  },
  "headline": "Nginx Conf",
  "description" : "nginx.conf详解 [TOC]\n1、user 示例:user nginx;\nnginx worker进程运行的用户及用户组\n语法：user username[groupname] 默认：user nobody nobody\nuser用于设置master进程启动后，fork出的worker进程运行在那个用户和用户组下。当按照\x26rdquo;user username;\x26ldquo;设置时，用户组名与用户名相同。 2、worker_processes 示例: worker_processes 4;\nnginx worker进程个数：其数量直接影响性能。每个worker进程都是单线程的进程，他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用，那么，有多少CPU内核就应该配置多少个进程，反之，有可能出现阻塞式调用，那么，需要配置稍多一些的worker进程。\n3、events{} 3.1、worker_connections 示例：worker_connetcions 1024;\n定义每个work_process同时开启的最大连接数，即允许最多只能有这么多连接\n3.2、accept_mutex 示例：accept_mutex on；\n当某一个时刻只有一个网络连接请求服务器时，服务器上有多个睡眠的进程会被同时叫醒，这样会损耗一定的服务器性能。\nNginx中的accept_mutex设置为on，将会对多个Nginx进程（worker processer）接收连接时进行序列化，防止多个进程争抢资源。\n默认就是on。\n3.3multi_accept 示例：multi_accept on;\nnginx worker processer可以做到同时接收多个新到达的网络连接，前提是把该参数设置为on。\n默认为off，即每个worker process一次只能接收一个新到达的网络连接。\n4、http{} 4.1、include 示例：include \/etc\/nginx\/mime.types;\n对配置文件所包含文件的设定，减少主配置文件的复杂度，相当于把部分设置放在别的地方，然后在包含进来，保持主配置文件的简洁\n4.2、default_type 示例：default_type application\/octet-stream;\n默认文件类型，当文件类型未定义时候就使用这类设置的\n4.3、log_format 示例：log_format main \x26lsquo;$remote_addr - $remote_user [$time_local] \x26ldquo;$request\x26rdquo; \x26lsquo;\n​ \x26lsquo;$status $body_bytes_sent \x26ldquo;$http_referer\x26rdquo; \x26lsquo;\n​ \x26lsquo;\x26ldquo;$http_user_agent\x26rdquo; \x26ldquo;$http_x_forwarded_for\x26rdquo;\x26lsquo;;\n定义nginx日志内容格式，其中main为日志格式的名字，后面的为nginx的内部变量组成的一串字符串\n4.4、access_log 示例：access_log \/var\/log\/nginx\/access.",
  "inLanguage" : "zh-cn",
  "wordCount":  269 ,
  "datePublished" : "2019-11-24T23:40:33",
  "dateModified" : "2019-11-24T23:40:33",
  "image" : "https:\/\/cyboca.ga\/img\/avatar-icon.png",
  "keywords" : [ "Nginx" ],
  "mainEntityOfPage" : "https:\/\/cyboca.ga\/post\/emiya\/nginx-conf\/",
  "publisher" : {
    "@type": "Organization",
    "name" : "https:\/\/cyboca.ga",
    "logo" : {
        "@type" : "ImageObject",
        "url" : "https:\/\/cyboca.ga\/img\/avatar-icon.png",
        "height" :  60 ,
        "width" :  60
    }
  }
}
</script>

<meta property="og:title" content="Nginx Conf" />
<meta property="og:description" content="nginx.conf详解 [TOC]
1、user 示例:user nginx;
nginx worker进程运行的用户及用户组
语法：user username[groupname] 默认：user nobody nobody
user用于设置master进程启动后，fork出的worker进程运行在那个用户和用户组下。当按照&rdquo;user username;&ldquo;设置时，用户组名与用户名相同。 2、worker_processes 示例: worker_processes 4;
nginx worker进程个数：其数量直接影响性能。每个worker进程都是单线程的进程，他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用，那么，有多少CPU内核就应该配置多少个进程，反之，有可能出现阻塞式调用，那么，需要配置稍多一些的worker进程。
3、events{} 3.1、worker_connections 示例：worker_connetcions 1024;
定义每个work_process同时开启的最大连接数，即允许最多只能有这么多连接
3.2、accept_mutex 示例：accept_mutex on；
当某一个时刻只有一个网络连接请求服务器时，服务器上有多个睡眠的进程会被同时叫醒，这样会损耗一定的服务器性能。
Nginx中的accept_mutex设置为on，将会对多个Nginx进程（worker processer）接收连接时进行序列化，防止多个进程争抢资源。
默认就是on。
3.3multi_accept 示例：multi_accept on;
nginx worker processer可以做到同时接收多个新到达的网络连接，前提是把该参数设置为on。
默认为off，即每个worker process一次只能接收一个新到达的网络连接。
4、http{} 4.1、include 示例：include /etc/nginx/mime.types;
对配置文件所包含文件的设定，减少主配置文件的复杂度，相当于把部分设置放在别的地方，然后在包含进来，保持主配置文件的简洁
4.2、default_type 示例：default_type application/octet-stream;
默认文件类型，当文件类型未定义时候就使用这类设置的
4.3、log_format 示例：log_format main &lsquo;$remote_addr - $remote_user [$time_local] &ldquo;$request&rdquo; &lsquo;
​ &lsquo;$status $body_bytes_sent &ldquo;$http_referer&rdquo; &lsquo;
​ &lsquo;&ldquo;$http_user_agent&rdquo; &ldquo;$http_x_forwarded_for&rdquo;&lsquo;;
定义nginx日志内容格式，其中main为日志格式的名字，后面的为nginx的内部变量组成的一串字符串
4.4、access_log 示例：access_log /var/log/nginx/access.">
<meta property="og:image" content="https://cyboca.ga/img/avatar-icon.png" />
<meta property="og:url" content="https://cyboca.ga/post/emiya/nginx-conf/" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="panda power!" />

  <meta name="twitter:title" content="Nginx Conf" />
  <meta name="twitter:description" content="nginx.conf详解 [TOC]
1、user 示例:user nginx;
nginx worker进程运行的用户及用户组
语法：user username[groupname] 默认：user nobody nobody
user用于设置master进程启动后，fork出的worker进程运行在那个用户和用户组下。当按照&rdquo;user username;&ldquo;设置时，用户组 …">
  <meta name="twitter:image" content="https://cyboca.ga/img/avatar-icon.png" />
  <meta name="twitter:card" content="summary" />
  <link href='https://cyboca.ga/img/favicon.ico' rel='icon' type='image/x-icon'/>
  <meta name="generator" content="Hugo 0.58.3" />
  <link rel="alternate" href="https://cyboca.ga/index.xml" type="application/rss+xml" title="panda power!"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.css" integrity="sha384-9eLZqc9ds8eNjO3TmqPeYcDj8n+Qfa4nuSiGYa6DjLNcv9BtN69ZIulL9+8CqC9Y" crossorigin="anonymous">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"><link rel="stylesheet" href="https://cyboca.ga/css/main.css" /><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" />
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" />
  <link rel="stylesheet" href="https://cyboca.ga/css/highlight.min.css" /><link rel="stylesheet" href="https://cyboca.ga/css/codeblock.css" /><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe.min.css" integrity="sha384-h/L2W9KefUClHWaty3SLE5F/qvc4djlyR4qY3NUV5HGQBBW7stbcfff1+I/vmsHh" crossorigin="anonymous">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/default-skin/default-skin.min.css" integrity="sha384-iD0dNku6PYSIQLyfTOpB06F2KCZJAKLOThS5HRe8b3ibhdEQ6eKsFf/EeFxdOt5R" crossorigin="anonymous">



  </head>
  <body>
    <nav class="navbar navbar-default navbar-fixed-top navbar-custom">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#main-navbar">
        <span class="sr-only">切换导航</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="https://cyboca.ga">panda power!</a>
    </div>

    <div class="collapse navbar-collapse" id="main-navbar">
      <ul class="nav navbar-nav navbar-right">
        
          
            <li>
              <a title="文章" href="/categories/">文章</a>
            </li>
          
        
          
            <li>
              <a title="tags" href="/tags/">tags</a>
            </li>
          
        

        

        
      </ul>
    </div>

    
      <div class="avatar-container">
        <div class="avatar-img-border">
          <a title="panda power!" href="https://cyboca.ga">
            <img class="avatar-img" src="https://cyboca.ga/img/avatar-icon.png" alt="panda power!" />
          </a>
        </div>
      </div>
    

  </div>
</nav>




    


<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

<div class="pswp__bg"></div>

<div class="pswp__scroll-wrap">
    
    <div class="pswp__container">
      <div class="pswp__item"></div>
      <div class="pswp__item"></div>
      <div class="pswp__item"></div>
    </div>
    
    <div class="pswp__ui pswp__ui--hidden">
    <div class="pswp__top-bar">
      
      <div class="pswp__counter"></div>
      <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
      <button class="pswp__button pswp__button--share" title="Share"></button>
      <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
      <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
      
      
      <div class="pswp__preloader">
        <div class="pswp__preloader__icn">
          <div class="pswp__preloader__cut">
            <div class="pswp__preloader__donut"></div>
          </div>
        </div>
      </div>
    </div>
    <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
      <div class="pswp__share-tooltip"></div>
    </div>
    <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
    </button>
    <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
    </button>
    <div class="pswp__caption">
      <div class="pswp__caption__center"></div>
    </div>
    </div>
    </div>
</div>


  
  
  






  

  <header class="header-section ">
    
    <div class="intro-header no-img">
      <div class="container">
        <div class="row">
          <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
            <div class="post-heading">
              
                <h1>Nginx Conf</h1>
              
              
              
              
                <span class="post-meta">
  
  
  <i class="fas fa-calendar"></i>&nbsp;发表于 November 24, 2019
  
  
    &nbsp;|&nbsp;<i class="fas fa-clock"></i>&nbsp;2&nbsp;分钟
  
  
    &nbsp;|&nbsp;<i class="fas fa-book"></i>&nbsp;269&nbsp;个字
  
  
    
      &nbsp;|&nbsp;<i class="fas fa-user"></i>&nbsp;emiya
    
  
  
</span>


              
            </div>
          </div>
        </div>
      </div>
    </div>
  </header>


    <div id="gotoTop"><a href="#"></a></div>
    
<div class="container" role="main">
  <div class="row">
    <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
      <article role="main" class="blog-post">
        

<h1 id="nginx-conf详解">nginx.conf详解</h1>

<p>[TOC]</p>

<h2 id="1-user">1、user</h2>

<p>示例:user nginx;</p>

<p>nginx worker进程运行的用户及用户组</p>

<p>语法：user username[groupname]    默认：user nobody nobody</p>

<p>user用于设置master进程启动后，fork出的worker进程运行在那个用户和用户组下。当按照&rdquo;user username;&ldquo;设置时，用户组名与用户名相同。
<img src="/img/emiya/nginx/001.png" alt="img" /></p>

<h2 id="2-worker-processes">2、worker_processes</h2>

<p>示例: worker_processes  4;</p>

<p>nginx worker进程个数：其数量直接影响性能。每个worker进程都是单线程的进程，他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用，那么，有多少CPU内核就应该配置多少个进程，反之，有可能出现阻塞式调用，那么，需要配置稍多一些的worker进程。</p>

<p><img src="/img/emiya/nginx/002.png" alt="img" /></p>

<p><img src="/img/emiya/nginx/003.png" alt="img" /></p>

<h2 id="3-events">3、events{}</h2>

<h3 id="3-1-worker-connections">3.1、<strong>worker_connections</strong></h3>

<p>示例：worker_connetcions 1024;</p>

<p>定义每个work_process同时开启的最大连接数，即允许最多只能有这么多连接</p>

<h3 id="3-2-accept-mutex">3.2、accept_mutex</h3>

<p>示例：accept_mutex on；</p>

<p>当某一个时刻只有一个网络连接请求服务器时，服务器上有多个睡眠的进程会被同时叫醒，这样会损耗一定的服务器性能。</p>

<p>Nginx中的accept_mutex设置为on，将会对多个Nginx进程（worker processer）接收连接时进行序列化，防止多个进程争抢资源。</p>

<p>默认就是on。</p>

<h3 id="3-3multi-accept">3.3multi_accept</h3>

<p>示例：multi_accept on;</p>

<p>nginx worker processer可以做到同时接收多个新到达的网络连接，前提是把该参数设置为on。</p>

<p>默认为off，即每个worker process一次只能接收一个新到达的网络连接。</p>

<h2 id="4-http">4、http{}</h2>

<h3 id="4-1-include">4.1、include</h3>

<p>示例：include       /etc/nginx/mime.types;</p>

<p>对配置文件所包含文件的设定，减少主配置文件的复杂度，相当于把部分设置放在别的地方，然后在包含进来，保持主配置文件的简洁</p>

<h3 id="4-2-default-type">4.2、default_type</h3>

<p>示例：default_type  application/octet-stream;</p>

<p>默认文件类型，当文件类型未定义时候就使用这类设置的</p>

<h3 id="4-3-log-format">4.3、log_format</h3>

<p>示例：log_format  main  &lsquo;$remote_addr - $remote_user [$time_local] &ldquo;$request&rdquo; &lsquo;</p>

<p>​                       &lsquo;$status $body_bytes_sent &ldquo;$http_referer&rdquo; &lsquo;</p>

<p>​                       &lsquo;&ldquo;$http_user_agent&rdquo; &ldquo;$http_x_forwarded_for&rdquo;&lsquo;;</p>

<p>定义nginx日志内容格式，其中main为日志格式的名字，后面的为nginx的内部变量组成的一串字符串</p>

<h3 id="4-4-access-log">4.4、access_log</h3>

<p>示例：access_log  /var/log/nginx/access.log  main;</p>

<p>定义日志的路径以及采用的日志格式，该参数可以在server配置块中定义，main指的是上边定义的日志格式，若不定义，采用系统默认格式。</p>

<h3 id="4-5-sendfile">4.5、sendfile</h3>

<p>是否调用sendfile函数传输文件，默认为off，使用sendfile函数传输，可以减少user mode和kernel mode的切换，从而提升服务器性能。</p>

<p>对于普通应用设为 on，如果用来进行下载等应用磁盘IO重负载应用，可设置为off，以平衡磁盘与网络I/O处理速度，降低系统的负载。</p>

<h3 id="4-6-sendfile-max-chunk">4.6、sendfile_max_chunk</h3>

<p>示例：sendfile_max_chunk 128k;</p>

<p>该参数限定nginx worker process每次调用sendfile()函数传输数据的最大值，默认值为0，如果设置为0则无限制。配合上边sendfile 选项一起使用。</p>

<h3 id="4-7-keepalive-timeout">4.7、keepalive_timeout</h3>

<p>示例：keepalive_timeout 65 60;</p>

<p>该参数有两个值，第一个值设置nginx服务器与客户端会话结束后仍旧保持连接的最长时间，单位是秒，默认为75s。</p>

<p>第二个值可以省略，它是针对客户端的浏览器来设置的，可以通过curl -I看到header信息中有一项Keep-Alive: timeout=60，如果不设置就没有这一项。</p>

<p>第二个数值设置后，浏览器就会根据这个数值决定何时主动关闭连接，nginx服务器就不操心了。但有的浏览器并不认可该参数。</p>

<p><img src="/img/emiya/nginx/004.png" alt="img" /></p>

<h3 id="4-8-send-timeout">4.8、send_timeout</h3>

<p>示例：send_timeout 60;</p>

<p>这个超时时间是发送响应的超时时间，即Nginx服务器向客户端发送了数据包，但客户端一直没有去接收这个数据包。如果某个连接超过send_timeout定义的超时时间，那么Nginx将会关闭这个连接。</p>

<h3 id="4-9-client-max-body-size-10m">4.9、client_max_body_size 10m;</h3>

<p>示例：client_max_body_size 10m;</p>

<p>浏览器在发送含有较大HTTP包体的请求时，其头部会有一个Content-Length字段，client_max_body_size是用来限制Content-Length所示值的大小的。</p>

<p>这个限制包体的配置不用等Nginx接收完所有的HTTP包体，就可以告诉用户请求过大不被接受。会返回413状态码。</p>

<p>例如，用户试图上传一个1GB的文件，Nginx在收完包头后，发现Content-Length超过client_max_body_size定义的值，</p>

<p>就直接发送413(Request Entity Too Large)响应给客户端。</p>

<h3 id="4-10-server">4.10、server</h3>

<p>server{}包含在http{}内部，每一个server{}都是一个虚拟主机（站点）</p>

<h4 id="4-10-1-listen">4.10.1 listen</h4>

<p>示例：listen 80;</p>

<p>设置监听端口为80，可以自定义其他端口，也可以加上IP地址，如，listen 127.0.0.1:8080;</p>

<h4 id="4-10-2-server-name">4.10.2 server_name</h4>

<p>主机名称：其后可以跟多个主机名称，开始处理一个HTTP请求时，nginx会取出header头中的Host，与每个server中的server_name进行匹配，以此决定到底由那一个server来处理这个请求。有可能一个Host与多个server块中的server_name都匹配，这时会根据匹配优先级来选择实际处理的server块。</p>

<p>server_name与Host的匹配优先级如下</p>

<p>首先选择所有字符串完全匹配的server_name   如：www.emiya.com</p>

<p>其次选择通配符在前面的server_name 如：*.emiya.com</p>

<p>其次选择通配符在后面的server_name 如：www.emiya.*</p>

<p>最后选择使用正在表达式才匹配的server_name       如: ~^.emiya.com$</p>

<p><img src="/img/emiya/nginx/005.png" alt="img" /></p>

<p><img src="/img/emiya/nginx/006.png" alt="img" /></p>

<h4 id="4-10-3-root和alias区别">4.10.3 root和alias区别</h4>

<p>root和alias都可以定义在location模块中，都是用来指定请求资源的真实路径</p>

<p>root指令是携带localhost后面的路径，而alias指令是不携带的</p>

<p>alias指定的目录是准确的，即location匹配访问的path目录下的文件直接是在alias目录下查找的；
 root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的；
 使用alias标签的目录块中不能使用rewrite的break（具体原因不明）；另外，alias指定的目录后面必须要加上&rdquo;/&ldquo;符号！！
 alias虚拟目录配置中，location匹配的path目录如果后面不带&rdquo;/&ldquo;，那么访问的url地址中这个path目录后面加不加&rdquo;/&ldquo;不影响访问，访问时它会自动加上&rdquo;/&ldquo;；但是如果location匹配的path目录后面加上&rdquo;/&ldquo;，那么访问的url地址中这个path目录必须要加上&rdquo;/&ldquo;，访问时它不会自动加上&rdquo;/&ldquo;。如果不加上&rdquo;/&ldquo;，访问就会失败！
 root目录配置中，location匹配的path目录后面带不带&rdquo;/&ldquo;，都不会影响访问</p>

<p>root可以理解为匹配的路径+真实路径</p>

<p>alias可以理解为匹配路径替换为真实路径</p>

<p><img src="/img/emiya/nginx/007.png" alt="img" /></p>

<p><img src="/img/emiya/nginx/008.png" alt="img" /></p>

<h4 id="4-10-5-location">4.10.5 location</h4>

<p>语法规则： location [=|~|~*|^~] /uri/ { … }</p>

<p>= 开头表示精确匹配</p>

<p>^~ 开头表示uri以某个常规字符串开头，理解为匹配 url路径即可。nginx不对url做编码，因此请求为/static/20%/aa，可以被规则^~ /static/ /aa匹配到（注意是空格）。以xx开头</p>

<p>~ 开头表示区分大小写的正则匹配                     以xx结尾</p>

<p>~* 开头表示不区分大小写的正则匹配                以xx结尾</p>

<p>!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则</p>

<p>/ 通用匹配，任何请求都会匹配到。</p>

<p>示例：</p>

<p>location = / {</p>

<p>[ configuration A ]</p>

<p>}</p>

<p>只有当用户请求是/时，才会使用该location下的配置</p>

<p>location / {</p>

<p>[ configuration B ]</p>

<p>}</p>

<p>可以匹配所有请求</p>

<p>location ^~ /images/ {</p>

<p>[ configuration C ]</p>

<p>}</p>

<p>匹配以/images/开头的任何查询并停止搜索</p>

<p>表示匹配URL时忽略字母大小写问题</p>

<p>location ~* .(gif|jpg|jpeg)$ {</p>

<p>[ configuration D ]</p>

<p>}</p>

<p>匹配任何以gif、jpg或jpeg结尾的请求</p>

<h4 id="4-10-6-rewrite">4.10.6 rewrite</h4>

<p>rewrite和location的功能有点相像，都能实现跳转，主要区别在于rewrite常用于同一域名内更改获取资源的路径，而location是对一类路径做控制访问和反向代理，可以proxy_pass到其他服务器。</p>

<p>Nginx提供的全局变量或自己设置的变量，结合正则表达式和标志位实现url重写以及重定向。
 rewrite只能放在server{},location{},if{}中，
 并且只能对域名后边的除去传递的参数外的字符串起作用。</p>

<p>语法结构：rewrite regex replacement [flag];</p>

<p>作用域: server, location, if</p>

<p><strong>rewrite</strong>的含义：该指令是实现URL重写的指令。
 <strong>regex</strong>的含义：用于匹配URI的正则表达式。
 <strong>replacement</strong>：将regex正则匹配到的内容替换成 replacement。
 <strong>flag: flag</strong>标记。</p>

<p>flag有如下值：</p>

<p><strong>last:</strong> 本条规则匹配完成后，继续向下匹配新的location URI 规则。(不常用)
 <strong>break:</strong> 本条规则匹配完成即终止，不再匹配后面的任何规则(不常用)。
 <strong>redirect:</strong> 返回302临时重定向，浏览器地址会显示跳转新的URL地址。
 <strong>permanent:</strong> 返回301永久重定向。浏览器地址会显示跳转新的URL地址。</p>

<p>示例：rewrite /aa /www/ redirect;</p>

<p>浏览器输如<a href="http://www.emiya.com/aa会自定跳转到http://www.emiya.com/www并且返回302状态码">http://www.emiya.com/aa会自定跳转到http://www.emiya.com/www并且返回302状态码</a></p>

<p><img src="/img/emiya/nginx/009.png" alt="img" /></p>

<p><img src="/img/emiya/nginx/010.png" alt="img" /></p>

<p>示例：rewrite /aa /www/ <strong>permanent</strong>;</p>

<p>浏览器输入<a href="http://www.emiya.com/aa会自动跳转到http://ww/emiya/com/www并返回301状态码">http://www.emiya.com/aa会自动跳转到http://ww/emiya/com/www并返回301状态码</a></p>

<p><img src="/img/emiya/nginx/011.png" alt="img" /></p>

<p><img src="/img/emiya/nginx/012.png" alt="img" /></p>

<h2 id="5-负载均衡">5、负载均衡</h2>

<h3 id="5-1-round-robin轮询">5.1 round robin轮询</h3>

<p><strong>轮询是upstream的默认分配方式。即每个请求按照时间顺序轮流分配到不同的后端服务器，如果某个后端服务器down掉后，能自动剔除</strong></p>

<p><strong>示例：</strong></p>

<p><strong><img src="/img/emiya/nginx/013.png" alt="img" /></strong></p>

<p><strong><img src="/img/emiya/nginx/014.png" alt="img" /></strong></p>

<h3 id="5-2加权轮询-wrr-weight-round-robin">5.2加权轮询 wrr weight round robin</h3>

<p><strong>轮询的加强版 即可指定轮询比率 weight和访问几率成正比，主要用于后端服务器异质的场景下</strong></p>

<p><strong>示例：</strong></p>

<p><strong><img src="/img/emiya/nginx/015.png" alt="img" /></strong></p>

<p><strong><img src="/img/emiya/nginx/016.png" alt="img" /></strong></p>

<h3 id="5-3ip-hash">5.3ip_hash</h3>

<p><strong>每个请求按照访问ip (即Nginx的前置服务器或客户端IP)的hash结果分配，这样每个访客会固定访问一个后端服务器，可以解决session(会话)一致问题</strong></p>

<p><strong>示例：</strong></p>

<p>**<img src="/img/emiya/nginx/017.png" alt="img" /> **</p>


        
          <div class="blog-tags">
            
              <a href="https://cyboca.ga/tags/nginx/">Nginx</a>&nbsp;
            
          </div>
        

        
            <hr/>
            <section id="social-share">
              <div class="list-inline footer-links">
                

<div class="share-box" aria-hidden="true">
    <ul class="share">
      
      <li>
        <a href="//twitter.com/share?url=https%3a%2f%2fcyboca.ga%2fpost%2femiya%2fnginx-conf%2f&amp;text=Nginx%20Conf&amp;via=" target="_blank" title="Share on Twitter">
          <i class="fab fa-twitter"></i>
        </a>
      </li>
  
      
      <li>
        <a href="//www.facebook.com/sharer/sharer.php?u=https%3a%2f%2fcyboca.ga%2fpost%2femiya%2fnginx-conf%2f" target="_blank" title="Share on Facebook">
          <i class="fab fa-facebook"></i>
        </a>
      </li>
  
      
      <li>
        <a href="//reddit.com/submit?url=https%3a%2f%2fcyboca.ga%2fpost%2femiya%2fnginx-conf%2f&amp;title=Nginx%20Conf" target="_blank" title="Share on Reddit">
          <i class="fab fa-reddit"></i>
        </a>
      </li>
  
      
      <li>
        <a href="//www.linkedin.com/shareArticle?url=https%3a%2f%2fcyboca.ga%2fpost%2femiya%2fnginx-conf%2f&amp;title=Nginx%20Conf" target="_blank" title="Share on LinkedIn">
          <i class="fab fa-linkedin"></i>
        </a>
      </li>
  
      
      <li>
        <a href="//www.stumbleupon.com/submit?url=https%3a%2f%2fcyboca.ga%2fpost%2femiya%2fnginx-conf%2f&amp;title=Nginx%20Conf" target="_blank" title="Share on StumbleUpon">
          <i class="fab fa-stumbleupon"></i>
        </a>
      </li>
  
      
      <li>
        <a href="//www.pinterest.com/pin/create/button/?url=https%3a%2f%2fcyboca.ga%2fpost%2femiya%2fnginx-conf%2f&amp;description=Nginx%20Conf" target="_blank" title="Share on Pinterest">
          <i class="fab fa-pinterest"></i>
        </a>
      </li>
    </ul>
  </div>
  

              </div>
            </section>
        

        
          

          
        
      </article>

      
        <ul class="pager blog-pager">
          
            <li class="previous">
              <a href="https://cyboca.ga/post/emiya/traefik/" data-toggle="tooltip" data-placement="top" title="Traefik">&larr; 前一篇</a>
            </li>
          
          
            <li class="next">
              <a href="https://cyboca.ga/post/emiya/headless-service/" data-toggle="tooltip" data-placement="top" title="Headless service">后一篇 &rarr;</a>
            </li>
          
        </ul>
      


      
        
        
      

    </div>
  </div>
</div>

      
<footer>
  <div class="container">
    <div class="row">
      <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
        <ul class="list-inline text-center footer-links">
          
          
          <li>
            <a href="" title="RSS">
              <span class="fa-stack fa-lg">
                <i class="fas fa-circle fa-stack-2x"></i>
                <i class="fas fa-rss fa-stack-1x fa-inverse"></i>
              </span>
            </a>
          </li>
          
        </ul>
        <p class="credits copyright text-muted">
          
            
              <a href="example.com">casper chen</a>
            
          

          &nbsp;&bull;&nbsp;&copy;
          
            2019
          

          
            &nbsp;&bull;&nbsp;
            <a href="https://cyboca.ga">panda power!</a>
          
        </p>
        
        <p class="credits theme-by text-muted">
          由 <a href="https://gohugo.io">Hugo v0.58.3</a> 强力驱动 &nbsp;&bull;&nbsp; 主题 <a href="https://github.com/halogenica/beautifulhugo">Beautiful Hugo</a> 移植自 <a href="https://deanattali.com/beautiful-jekyll/">Beautiful Jekyll</a>
          
        </p>
      </div>
    </div>
  </div>
</footer><script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.js" integrity="sha384-K3vbOmF2BtaVai+Qk37uypf7VrgBubhQreNQe9aGsz9lB63dIFiQVlJbr92dw2Lx" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/contrib/auto-render.min.js" integrity="sha384-kmZOZB5ObwgQnS/DuDg6TScgOiWWBiVt0plIRkZCmE6rDZGrEOQeHM5PcHi+nyqe" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

<script src="https://cyboca.ga/js/main.js"></script>
<script src="https://cyboca.ga/js/highlight.min.js"></script>
<script> hljs.initHighlightingOnLoad(); </script>
<script> $(document).ready(function() {$("pre.chroma").css("padding","0");}); </script><script> renderMathInElement(document.body); </script><script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe.min.js" integrity="sha384-QELNnmcmU8IR9ZAykt67vGr9/rZJdHbiWi64V88fCPaOohUlHCqUD/unNN0BXSqy" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.2/photoswipe-ui-default.min.js" integrity="sha384-m67o7SkQ1ALzKZIFh4CiTA8tmadaujiTa9Vu+nqPSwDOqHrDmxLezTdFln8077+q" crossorigin="anonymous"></script><script src="https://cyboca.ga/js/load-photoswipe.js"></script>









    
  </body>
</html>

